package org.kxml2.wap.syncml;

import org.kxml2.wap.WbxmlParser;
import org.kxml2.wap.WbxmlSerializer;

public abstract class SyncML {
    protected SyncML() {
    }

    // SyncML-Common (-//SYNCML//DTD SyncML 1.2//EN and -//SYNCML//DTD MetInf 1.2//EN) support

    public static WbxmlParser createParser() {
        WbxmlParser p = new WbxmlParser();
        p.setTagTable(0, TAG_TABLE_0);
        p.setTagTable(1, TAG_TABLE_1);
        return p;
    }

    public static WbxmlSerializer createSerializer() {
        WbxmlSerializer s = new WbxmlSerializer();
        s.setTagTable(0, TAG_TABLE_0);
        s.setTagTable(1, TAG_TABLE_1);
        return s;
    }

    // SyncML-Common + DMDDF (-//OMA//DTD-DM-DDF 1.2//EN) support

    public static WbxmlParser createDMParser() {
        WbxmlParser p = createParser();
        p.setTagTable(2, TAG_TABLE_2_DM);
        return p;
    }

    public static WbxmlSerializer createDMSerializer() {
        WbxmlSerializer s = createSerializer();
        s.setTagTable(2, TAG_TABLE_2_DM);
        return s;
    }

    // Tables

    public static final String[] TAG_TABLE_0 = {

            //  -//SYNCML//DTD SyncML 1.2//EN

            "Add",            // 0x05
            "Alert",          // 0x06
            "Archive",        // 0x07
            "Atomic",         // 0x08
            "Chal",           // 0x09
            "Cmd",            // 0x0a
            "CmdID",          // 0x0b
            "CmdRef",         // 0x0c
            "Copy",           // 0x0d
            "Cred",           // 0x0e
            "Data",           // 0x0f
            "Delete",         // 0x10
            "Exec",           // 0x11
            "Final",          // 0x12
            "Get",            // 0x13
            "Item",           // 0x14
            "Lang",           // 0x15
            "LocName",        // 0x16
            "LocURI",         // 0x17
            "Map",            // 0x18
            "MapItem",        // 0x19
            "Meta",           // 0x1a
            "MsgID",          // 0x1b
            "MsgRef",         // 0x1c
            "NoResp",         // 0x1d
            "NoResults",      // 0x1e
            "Put",            // 0x1f
            "Replace",        // 0x20
            "RespURI",        // 0x21
            "Results",        // 0x22
            "Search",         // 0x23
            "Sequence",       // 0x24
            "SessionID",      // 0x25
            "SftDel",         // 0x26
            "Source",         // 0x27
            "SourceRef",      // 0x28
            "Status",         // 0x29
            "Sync",           // 0x2a
            "SyncBody",       // 0x2b
            "SyncHdr",        // 0x2c
            "SyncML",         // 0x2d
            "Target",         // 0x2e
            "TargetRef",      // 0x2f
            "Reserved for future use",    // 0x30
            "VerDTD",         // 0x31
            "VerProto",       // 0x32
            "NumberOfChanged",// 0x33
            "MoreData",       // 0x34
            "Field",          // 0x35
            "Filter",         // 0x36
            "Record",         // 0x37
            "FilterType",     // 0x38
            "SourceParent",   // 0x39
            "TargetParent",   // 0x3a
            "Move",           // 0x3b
            "Correlator"      // 0x3c
    };

    public static final String[] TAG_TABLE_1 = {

            //  -//SYNCML//DTD MetInf 1.2//EN

            "Anchor",         // 0x05
            "EMI",            // 0x06
            "Format",         // 0x07
            "FreeID",         // 0x08
            "FreeMem",        // 0x09
            "Last",           // 0x0a
            "Mark",           // 0x0b
            "MaxMsgSize",     // 0x0c
            "Mem",            // 0x0d
            "MetInf",         // 0x0e
            "Next",           // 0x0f
            "NextNonce",      // 0x10
            "SharedMem",      // 0x11
            "Size",           // 0x12
            "Type",           // 0x13
            "Version",        // 0x14
            "MaxObjSize",     // 0x15
            "FieldLevel"      // 0x16

    };

    public static final String[] TAG_TABLE_2_DM = {

            //  -//OMA//DTD-DM-DDF 1.2//EN

            "AccessType",         // 0x05
            "ACL",                // 0x06
            "Add",                // 0x07
            "b64",                // 0x08
            "bin",                // 0x09
            "bool",               // 0x0a
            "chr",                // 0x0b
            "CaseSense",          // 0x0c
            "CIS",                // 0x0d
            "Copy",               // 0x0e
            "CS",                 // 0x0f
            "date",               // 0x10
            "DDFName",            // 0x11
            "DefaultValue",       // 0x12
            "Delete",             // 0x13
            "Description",        // 0x14
            "DDFFormat",          // 0x15
            "DFProperties",       // 0x16
            "DFTitle",            // 0x17
            "DFType",             // 0x18
            "Dynamic",            // 0x19
            "Exec",               // 0x1a
            "float",              // 0x1b
            "Format",             // 0x1c
            "Get",                // 0x1d
            "int",                // 0x1e
            "Man",                // 0x1f
            "MgmtTree",           // 0x20
            "MIME",               // 0x21
            "Mod",                // 0x22
            "Name",               // 0x23
            "Node",               // 0x24
            "node",               // 0x25
            "NodeName",           // 0x26
            "null",               // 0x27
            "Occurence",          // 0x28
            "One",                // 0x29
            "OneOrMore",          // 0x2a
            "OneOrN",             // 0x2b
            "Path",               // 0x2c
            "Permanent",          // 0x2d
            "Replace",            // 0x2e
            "RTProperties",       // 0x2f
            "Scope",              // 0x30
            "Size",               // 0x31
            "time",               // 0x32
            "Title",              // 0x33
            "TStamp",             // 0x34
            "Type",               // 0x35
            "Value",              // 0x36
            "VerDTD",             // 0x37
            "VerNo",              // 0x38
            "xml",                // 0x39
            "ZeroOrMore",         // 0x3a
            "ZeroOrN",            // 0x3b
            "ZeroOrOne"           // 0x3c

    };

}

